package
{
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.PixelSnapping;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    import flash.events.MouseEvent;
    import flash.geom.Rectangle;
    import flash.utils.setTimeout;
    
    import utils.Ship;
    
    public class Test extends Sprite
    {
        
        public function Test()
        {
            if (stage)
            {
                init()
            }
            else
            {
                this.addEventListener(Event.ADDED_TO_STAGE, init);
            }
        }
        
        private function init(evnet:Event = null):void
        {
            setTimeout(start, 500);
        }
        
        private function start(evnet:Event = null):void
        {
//            var a:CrystalBall = new CrystalBall(50);
//            a.y = 50;
//            this.addChild(a);
            var bmd:BitmapData = new BitmapData(80, 40, true, 0xFFFFFF00);
            var rect:Rectangle = new Rectangle(0, 0, 80, 30);
            bmd.fillRect(rect, 0xFFFF0000);
            
//            var maskColor:uint = 0xFFFF0000;
            var maskColor:uint = 0xFFFFFFFF;
            var color:uint = 0xFFFF0000;
            /**
             * getColorBoundsRect () 方法
             * public function getColorBoundsRect(mask:uint, color:uint, findColor:Boolean = true):Rectangle
             *
             * 确定矩形区域是将位图图像中指定颜色的所有像素完全包括起来（如果将 findColor 参数设置为 true），
             * 还是将不包括指定颜色的所有像素完全包括起来（如果将 findColor 参数设置为 false）。
             * 例如，如果有一个源图像并且想要确定包含非零 Alpha 通道的图像矩形，请传递 {mask: 0xFF000000, color: 0x00000000} 作为参数。
             * 如果 findColor 参数设置为 true，则会在整个图像中搜索其 (value & mask) == color 的像素范围（其中 value 是像素的颜色值）。
             * 如果 findColor 参数设置为 false，则在整个图像中搜索以下像素的范围，这些像素满足条件 (value & mask) != color（其中 value 是像素的颜色值）。
             * 要确定图像周围的空白区域，请传递 {mask: 0xFFFFFFFF, color: 0xFFFFFFFF} 以查找非空白像素的范围。
             *
             *  参数
             *     mask:uint — 一个十六进制值，指定要考虑的 ARGB 颜色的位。通过使用 &（按位 AND）运算符，将颜色值与此十六进制值合并。
             *     color:uint — 一个十六进制值，指定要匹配（如果 findColor 设置为 true）或不 匹配（如果 findColor 设置为 false）的 ARGB 颜色。
             *     findColor:Boolean (default = true) — 如果该值设置为 true，则返回图像中颜色值的范围。如果该值设置为 false，则返回图像中不存在此颜色的范围。
             *  返回
             *     Rectangle — 指定颜色的图像区域。
             * */
            
            var str1:String;
            var str2:String;
            for (var i:int = 0; i < bmd.height; i++)
            {
                for (var j:int = 0; j < bmd.width; j++)
                {
                    str1 = bmd.getPixel32(j, i).toString(16);
                    str2 = uint(bmd.getPixel32(j, i) & maskColor).toString(16);
                    trace(str1 + " _ " + color.toString(16) + " _ " + str2 + " _ " + (str2 == color.toString(16)));
                }
            }
            var redBounds:Rectangle = bmd.getColorBoundsRect(maskColor, color, true);
            trace("redBounds:" + redBounds);
            
            var notRedBounds:Rectangle = bmd.getColorBoundsRect(maskColor, color, false);
            trace(notRedBounds);
            
            var bm:Bitmap = new Bitmap(bmd);
            addChild(bm);
        }
    
//        public function draw(container:DisplayObjectContainer, target:DisplayObject, width:Number = 150, height:Number = 200):BitmapData
//        {
//			var rect:Rectangle=target.getBounds(target) 
//			var scale:Number=getScale(width,height); 
//			var vw:Number=(width-target.width*scale)/2; 
//			var vh:Number=(height-target.height*scale)/2;
//			this.samllMapBMD=new BitmapData(width,height,true,0); 
//			var matrix:Matrix=new Matrix(); 
//			matrix.tx-=rect.topLeft.x; 
//			matrix.ty-=rect.topLeft.y; 
//			matrix.scale(scale,scale); 
//			matrix.scale(target.scaleX,target.scaleY) matrix.tx+=vw; 
//			matrix.ty+=vh; var rect2: 
//			var rect2:Rectangle=new Rectangle(0,0,width,height) 
//			var bitmapdata:Bitmapdata=new Bitmapdata(rect2.width,rect2.height,true,0) 
//			bitmapdata.draw(target,matrix,null,null,rect2) 
//            return bitmapdata
//        }
    }
}